home *** CD-ROM | disk | FTP | other *** search
- unit RASDevices;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, RASBase;
-
- type
- TRASDeviceManager = class (TRASBaseComponent)
- private
- { Private declarations }
- fDeviceNames, fDeviceTypes, fDummy2: TStrings;
- protected
- { Protected declarations }
- public
- { Public declarations }
- constructor Create (AOwner: TComponent); override;
- destructor Destroy; override;
- procedure Refresh;
- published
- { Published declarations }
- property DeviceNames: TStrings read fDeviceNames write fDummy2 stored False;
- property DeviceTypes: TStrings read fDeviceTypes write fDummy2 stored False;
- end;
-
- procedure Register;
-
- implementation
-
- constructor TRASDeviceManager.Create (AOwner: TComponent);
- begin
- Inherited Create (AOwner);
- fDeviceNames := TStringList.Create;
- fDeviceTypes := TStringList.Create;
- Refresh;
- end;
-
- destructor TRASDeviceManager.Destroy;
- begin
- fDeviceNames.Free;
- fDeviceTypes.Free;
- Inherited;
- end;
-
- procedure TRASDeviceManager.Refresh;
- type
- TRasDevInfo = record
- dwSize: DWORD;
- DeviceType: array [0..16] of Char;
- DeviceName: array [0..128] of Char;
- end;
- var
- CurDev: ^TRasDevInfo;
- Buffer: array [0..10000] of Char;
- Idx, BufSize, NumDevices: Integer;
- RasEnumDevices: function (Buffer: PChar; var BufSize,
- NumDevices: Integer): Integer; stdcall;
- begin
- if Available then begin
- // First off, refresh the entries list
- fDeviceNames.Clear;
- fDeviceTypes.Clear;
- RasEnumDevices := GetProc ('RasEnumDevicesA');
- if Assigned (RasEnumDevices) then begin
- CurDev := @Buffer;
- CurDev^.dwSize := sizeof (TRasDevInfo);
- BufSize := sizeof (Buffer);
- if CallProc (RasEnumDevices (Buffer, BufSize, NumDevices)) then
- for Idx := 0 to NumDevices - 1 do begin
- fDeviceTypes.Add (CurDev^.DeviceType);
- fDeviceNames.Add (CurDev^.DeviceName);
- Inc (CurDev);
- end;
- end;
- end;
- end;
-
- procedure Register;
- begin
- RegisterComponents ('DelphiMag', [TRASDeviceManager]);
- end;
-
- end.
-
-